home *** CD-ROM | disk | FTP | other *** search
- /* amiga/amiga.h
- vi:ts=3 sw=3:
- */
-
- /* $Id: amiga.h,v 1.16 1995/01/13 13:31:35 espie Exp espie $
- * $Log: amiga.h,v $
- * Revision 1.16 1995/01/13 13:31:35 espie
- * *** empty log message ***
- *
- *
- * Revision 1.15 1994/01/09 04:49:18 Espie
- * File requester !
- * Added pause gadget.
- * Uncentralized event handling using event management functions.
- * Scroller back calls.
- * Fully working asynchronous interface.
- * Problem with output ? Still to fix !
- * new TYPE_SYNC_DO.
- * Protos for obtain_message, send.
- *
- */
-
- #define forever for(;;)
-
- /* list scanning.
- * next is needed: with it, we can actually unlink the node while scanning
- * the current list. Type is provided to avoid type-casting errors in
- * SCANLIST expansion.
- */
- #define SCANLIST(node, next, list, type) \
- for((node) = (type)((struct MinList *)(list))->mlh_Head; \
- (next) = (type)((struct MinNode *)(node))->mln_Succ; \
- (node) = (next))
-
-
- #define PUBLIC_PORT_NAME "Debug this tracker"
-
- /* number of messages to allocate */
- #define BUFFER_SIZE 500
- /* (total size: 500 * 32 = 16000 bytes, corresponding to roughly
- * 1.5 second */
-
- struct ext_message
- {
- struct Message msg;
- #define TYPE_DIE 0
- #define TYPE_WAIT 1
- #define TYPE_FLUSH_CHANNEL 2
- #define TYPE_SETUP 3
- #define TYPE_CHANGE 4
- #define TYPE_FLUSH_BUFFER 5
- #define TYPE_COMM 6
- #define TYPE_SYNC 7
- #define TYPE_SYNC_DO 8
- #define TYPE_INVALID 9
- #define TYPE_PAUSE 10
- #define TYPE_UNPAUSE 11
-
- int type;
- union
- {
- struct
- {
- void (*func)(VALUE p);
- VALUE p;
- } hook;
- struct
- {
- ULONG high;
- ULONG low;
- } time;
- struct
- {
- void *start;
- ULONG length;
- } sample;
- struct
- {
- USHORT channel_mask;
- USHORT cycle;
- USHORT pitch;
- USHORT volume;
- } info;
- struct
- {
- struct MsgPort *port;
- struct Task *task;
- } comm;
- } data;
- };
-
-
- /* the audio server entry point */
- XT void subtask P((struct ext_message *msg));
-
- /* Standard functions of the client */
-
- /* mes = obtain_message():
- * obtain a message we can send to the server
- * (this call may block, but usually not for long)
- */
- XT struct ext_message *obtain_message P((void));
-
- /* mes = await_type(type):
- * wait for the return of the next message of a given type
- * and returns it. Synchronization with the server.
- */
- XT struct ext_message *await_type P((int type));
-
- /* send(msg, type):
- * send msg to the server, filling type along the way
- */
- XT void send P((struct ext_message *msg, int type));
-
-
- XT void add_scroller P((char *s));
-
- XT struct Screen *obtain_pubscreen(void);
-
- XT void set_break(void);
- XT void check_events(void);
- XT void await_events(void);
- XT void install_signal_handler(int signal, void (*f)(GENERIC data), GENERIC data);
- XT void remove_signal_handler(int signal);
- XT void install_req_handler(ULONG mask, void (*req_f)(ULONG received));
- XT void remove_req_handler(void);
-
- struct amiganame
- {
- struct MinNode n;
- int i;
- char s[0];
- };
-
- /* prototypes for the file requester */
-
- XT void launch_requester P((void));
- XT void requested_file P((struct amiganame *name));
-
- /* V39 function */
- XT void set_busy_pointer P((BOOL maybe));
-